// 页面权限检查工具
const permissionUtils = require('./permissions.js')

// 页面权限配置 - 定义每个页面需要的权限
const pagePermissions = {
  // 产品管理页面
  'pages/products/products': { module: 'product_manage', action: 'view' },
  'pages/product-detail/product-detail': { module: 'product_manage', action: 'view' },
  
  // 产品型号管理页面
  'pages/product-models/product-models': { module: 'model_manage', action: 'view' },
  'pages/product-model-detail/product-model-detail': { module: 'model_manage', action: 'view' },
  
  // 工序管理页面
  'pages/processes/processes': { module: 'process_manage', action: 'view' },
  'pages/process-detail/process-detail': { module: 'process_manage', action: 'view' },
  
  // 工序价格管理页面
  'pages/process-prices/process-prices': { module: 'price_manage', action: 'view' },
  'pages/process-price-detail/process-price-detail': { module: 'price_manage', action: 'view' },
  
  // 订单管理页面
  'pages/orders/orders': { module: 'order_manage', action: 'view' },
  'pages/order-detail/order-detail': { module: 'order_manage', action: 'view' },
  'pages/create-order/create-order': { module: 'order_manage', action: 'add' },
  'pages/order-progress/order-progress': { module: 'order_manage', action: 'view' },
  
  // 分工管理页面
  'pages/allocations/allocations': { module: 'allocation_manage', action: 'view' },
  'pages/allocation-manage/allocation-manage': { module: 'allocation_manage', action: 'view' },
  'pages/create-allocation/create-allocation': { module: 'allocation_manage', action: 'add' },
  
  // 报工管理页面
  'pages/reports/reports': { module: 'report_manage', action: 'view' },
  'pages/report-detail/report-detail': { module: 'report_manage', action: 'view' },
  'pages/submit-report/submit-report': { module: 'report_manage', action: 'view' },
  'pages/audit/audit': { module: 'report_manage', action: 'audit' },
  
  // 主动报工管理页面
  'pages/active-reports/active-reports': { module: 'active_report_manage', action: 'view' },
  'pages/active-report-detail/active-report-detail': { module: 'active_report_manage', action: 'view' },
  'pages/active-audit/active-audit': { module: 'active_report_manage', action: 'audit' },
  
  // 生产计划管理页面
  'pages/production-plans/production-plans': { module: 'production_plan_manage', action: 'view' },
  'pages/production-plan-detail/production-plan-detail': { module: 'production_plan_manage', action: 'view' },
  'pages/create-production-plan/create-production-plan': { module: 'production_plan_manage', action: 'add' },
  'pages/allocate-production-plan/allocate-production-plan': { module: 'production_plan_manage', action: 'view' },
  'pages/allocate-process/allocate-process': { module: 'production_plan_manage', action: 'view' },
  
  // 管理员管理页面
  'pages/admin-manage/admin-manage': { module: 'admin_manage', action: 'view' },
  'pages/admin-permissions/admin-permissions': { module: 'admin_manage', action: 'view' }
}

/**
 * 检查页面访问权限
 * @param {string} pagePath 页面路径
 * @returns {boolean} 是否有权限
 */
function checkPagePermission(pagePath) {
  try {
    const app = getApp()
    const adminInfo = app ? app.globalData.adminInfo : null
    
    console.log('页面权限检查 - pagePath:', pagePath);
    console.log('adminInfo:', adminInfo);
    
    // 如果没有管理员信息，拒绝访问
    if (!adminInfo) {
      console.log('没有管理员信息，拒绝访问');
      return false
    }
    
    // 超级管理员（ID为1）拥有所有权限
    if (adminInfo.id == 1 || adminInfo.id === 1 || adminInfo.id === '1') {
      console.log('超级管理员，允许访问 - adminInfo.id:', adminInfo.id, '类型:', typeof adminInfo.id);
      return true
    }
    
    // 检查页面是否需要权限
    const pagePermission = pagePermissions[pagePath]
    console.log('页面权限配置:', pagePermission);
    
    if (!pagePermission) {
      // 如果页面没有配置权限要求，默认允许访问
      console.log('页面没有配置权限要求，默认允许访问');
      return true
    }
    
    // 检查管理员是否有对应权限
    const hasPermission = permissionUtils.hasPermission(adminInfo.id, pagePermission.module, pagePermission.action)
    console.log('权限检查结果:', hasPermission);
    return hasPermission
  } catch (error) {
    console.error('权限检查出错:', error)
    return false
  }
}

/**
 * 页面权限检查装饰器
 * 在页面的onLoad方法中调用
 * @param {string} pagePath 页面路径
 */
function requirePagePermission(pagePath) {
  try {
    const hasPermission = checkPagePermission(pagePath)
    
    if (!hasPermission) {
      wx.showToast({
        title: '无权限访问此页面',
        icon: 'none',
        duration: 2000
      })
      
      setTimeout(() => {
        wx.navigateBack({
          delta: 1,
          fail: () => {
            wx.switchTab({
              url: '/pages/index/index'
            })
          }
        })
      }, 2000)
      
      return false
    }
    
    return true
  } catch (error) {
    console.error('页面权限检查出错:', error)
    return false
  }
}

/**
 * 获取当前页面路径
 * @returns {string} 页面路径
 */
function getCurrentPagePath() {
  const pages = getCurrentPages()
  const currentPage = pages[pages.length - 1]
  return currentPage.route
}

module.exports = {
  checkPagePermission,
  requirePagePermission,
  getCurrentPagePath,
  pagePermissions
}
